﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using DevExpress.Xpf.Core;
using ThanNhanTao.Server;
using DevExpress.Xpf.Grid;
using DevExpress.XtraEditors.DXErrorProvider;
using ThanNhanTao.Report;
using ThanNhanTao.Server.BLL;


namespace ThanNhanTao
{
    /// <summary>
    /// Interaction logic for frmPhieuChayThan.xaml
    /// </summary>
    public partial class frmDmYeuCau : DXWindow
    {
        private static bool isAdd = true;
        public frmDmYeuCau()
        {
            InitializeComponent();
            getDmYeuCau();
            getLoaiYeuCau();
            getDonViTinh();
            txtMaYeuCau.Focus();
        }
        private void getDmYeuCau()
        {
            List<Dm_YeuCau> dmYeuCau = new Dm_YeuCauBLL().RetrieveAllDmYeuCau();
            GridDanhSach.ItemsSource = dmYeuCau;
        }

        private void getLoaiYeuCau()
        {
            List<Dm_LoaiYeuCau> dmLoaiYeuCau = new Dm_YeuCauBLL().GetDSLoaiYeuCau();
            cboLoaiYeuCau.ItemsSource = dmLoaiYeuCau;
            cboLoaiYeuCau.DisplayMember = "TenLoaiYeuCau";
            cboLoaiYeuCau.ValueMember = "MaLoaiYeuCau";
        }
        private void getDonViTinh()
        {
            List<Dm_DonViTinh> dmDonViTinh = new Dm_YeuCauBLL().GetDSDonViTinh();
            cboDonViTinh.ItemsSource = dmDonViTinh;
            cboDonViTinh.DisplayMember = "TenDonViTinh";
            cboDonViTinh.ValueMember = "MaDonViTinh";
        }

        private void refreshManHinh()
        {
            cboLoaiYeuCau.SelectedItem = null;
            cboDonViTinh.SelectedItem = null;
            txtTenYeuCau.Text = "";
            txtQuyBHYT.Text = "";
            txtMaYeuCau.Text = "";
            txtGiaYeuCau.Text = "";
            txtGiaKhac.Text = "";
            txtGhiChu.Text = "";
            chkKichHoat.IsChecked = false;
            chkLaChayThan.IsChecked = false;
            chkNgoaiTru.IsChecked = false;
            chkNoiTru.IsChecked = false;
            isAdd = true;
            txtMaYeuCau.Focus();
        }

        private void setUpDate(Dm_YeuCau dmYeuCauTemple)
        {
            txtMaYeuCau.Text = dmYeuCauTemple.MaYeuCau;
            txtTenYeuCau.Text = dmYeuCauTemple.TenYeuCau;
            cboLoaiYeuCau.EditValue = dmYeuCauTemple.Dm_LoaiYeuCau;
            if (string.IsNullOrEmpty(cboLoaiYeuCau.DisplayText))
            {
                cboLoaiYeuCau.EditValue = dmYeuCauTemple.MaLoaiYeuCau;
            }
            cboDonViTinh.EditValue = dmYeuCauTemple.Dm_DonViTinh;
            if (string.IsNullOrEmpty(cboDonViTinh.DisplayText))
            {
                cboDonViTinh.EditValue = dmYeuCauTemple.MaDonViTinh;
            }

            txtGiaKhac.Text = dmYeuCauTemple.GiaKhac.ToString();
            txtGiaYeuCau.Text = dmYeuCauTemple.GiaYeuCau.ToString();
            txtQuyBHYT.Text = dmYeuCauTemple.QuyBHYT.ToString();
            chkNoiTru.IsChecked=dmYeuCauTemple.ChoNgoaiTru;
            chkNgoaiTru.IsChecked = dmYeuCauTemple.ChoNoiTru;
            chkLaChayThan.IsChecked = dmYeuCauTemple.LaChayThan;
            chkKichHoat.IsChecked=dmYeuCauTemple.KichHoat;
            txtGhiChu.Text = dmYeuCauTemple.GhiChu;
            isAdd = false;
        }

        private void buttonDong_Click(object sender, RoutedEventArgs e)
        {
            base.Close();
        }

        private void buttonHuyBo_Click(object sender, RoutedEventArgs e)
        {
            refreshManHinh();
        }

        private void buttonLuu_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if ((new Dm_YeuCauBLL().GetIdDmYeuCau(txtMaYeuCau.Text.Trim())) != null && isAdd==true)
                {
                    DXMessageBox.Show("Đã tồn tại mã yêu cầu trong dữ liệu", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Warning);
                    txtMaYeuCau.Focus();
                    return;
                }
                Dm_YeuCau dmYeuCauTemple = new Dm_YeuCau();
                dmYeuCauTemple.MaYeuCau = txtMaYeuCau.Text.Trim();
                dmYeuCauTemple.TenYeuCau = txtTenYeuCau.Text.Trim();
                try
                {
                    dmYeuCauTemple.MaLoaiYeuCau = cboLoaiYeuCau.SelectedItem != null ? ((Dm_LoaiYeuCau)cboLoaiYeuCau.SelectedItem).MaLoaiYeuCau
                                               : ((Dm_LoaiYeuCau)cboLoaiYeuCau.EditValue).MaLoaiYeuCau;
                }
                catch
                {
                    dmYeuCauTemple.MaLoaiYeuCau = cboLoaiYeuCau.SelectedItem != null ? ((Dm_LoaiYeuCau)cboLoaiYeuCau.SelectedItem).MaLoaiYeuCau
                                               : cboLoaiYeuCau.EditValue.ToString();
                }
                try
                {
                    dmYeuCauTemple.MaDonViTinh = cboDonViTinh.SelectedItem != null ? ((Dm_DonViTinh)cboDonViTinh.SelectedItem).MaDonViTinh
                                               : ((Dm_DonViTinh)cboDonViTinh.EditValue).MaDonViTinh;
                }
                catch
                {
                    dmYeuCauTemple.MaDonViTinh = cboDonViTinh.SelectedItem != null ? ((Dm_DonViTinh)cboDonViTinh.SelectedItem).MaDonViTinh
                                               : cboDonViTinh.EditValue.ToString();
                }

                dmYeuCauTemple.GiaKhac = decimal.Parse(txtGiaKhac.Text);
                dmYeuCauTemple.GiaYeuCau = decimal.Parse(txtGiaYeuCau.Text);
                dmYeuCauTemple.QuyBHYT = decimal.Parse(txtQuyBHYT.Text);
                dmYeuCauTemple.ChoNgoaiTru = chkNoiTru.IsChecked.Value;
                dmYeuCauTemple.ChoNoiTru = chkNgoaiTru.IsChecked.Value;
                dmYeuCauTemple.LaChayThan = chkLaChayThan.IsChecked.Value;
                dmYeuCauTemple.KichHoat = chkKichHoat.IsChecked.Value;
                dmYeuCauTemple.GhiChu = txtGhiChu.Text;
                if (isAdd)
                {
                    addDmYeuCau(dmYeuCauTemple);
                }
                else
                {
                    updateDmYeuCau(dmYeuCauTemple);
                }
            }
            catch { }

        }

        private void updateDmYeuCau(Dm_YeuCau dmYeuCauTemple)
        {
            if((new Dm_YeuCauBLL().UpdateDmYeuCau(dmYeuCauTemple))>0)
            {
                DXMessageBox.Show("Cập nhật dữ liệu thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                getDmYeuCau();
            }
            else
            {
                DXMessageBox.Show("Cập nhật dữ liệu không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void addDmYeuCau(Dm_YeuCau dmYeuCauTemple)
        {
            if ((new Dm_YeuCauBLL().AddDmYeuCau(dmYeuCauTemple)) > 0)
            {
                DXMessageBox.Show("Thêm mới dữ liệu thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                getDmYeuCau();
                isAdd = false;
            }
            else
            {
                DXMessageBox.Show("Thêm mới dữ liệu không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void TBvDmYeuCau_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.RightButton == MouseButtonState.Pressed) return;
            if (GridDanhSach.View.GetRowHandleByMouseEventArgs(e) != GridControl.InvalidRowHandle
                && GridDanhSach.View.GetRowHandleByMouseEventArgs(e) != GridControl.AutoFilterRowHandle
                && GridDanhSach.View.GetRowHandleByMouseEventArgs(e) != GridControl.NewItemRowHandle)
            {
                Dm_YeuCau bnClick = (Dm_YeuCau)GridDanhSach.GetFocusedRow();
                setUpDate(bnClick);
            }
        }

        private void TBvDmYeuCau_KeyUp(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.Key == Key.Enter)
                {
                    Dm_YeuCau bnClick = (Dm_YeuCau)GridDanhSach.GetFocusedRow();
                    setUpDate(bnClick);
                }
            }
            catch
            {
            }
        }

        private void btnDelRowYeuCauT_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Dm_YeuCau dmYeuCauT = (Dm_YeuCau)this.GridDanhSach.GetFocusedRow();
                if (DXMessageBox.Show("Bạn muốn xóa dữ liệu yêu cầu: \n" + dmYeuCauT.MaYeuCau + "-" + dmYeuCauT.TenYeuCau + " ra khỏi danh sách ?", "Chú ý", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    if (dmYeuCauT != null)
                    {
                        if ((new Dm_YeuCauBLL().DeleteDmYeuCau(dmYeuCauT.MaYeuCau.Trim())))
                        {
                            DXMessageBox.Show("Đã xóa dữ liệu yêu cầu thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                            getDmYeuCau();
                        }
                        else
                        {
                            DXMessageBox.Show("Thông tin này đã được sử dụng\n Xóa dữ liệu không thành công.", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Stop);
                        }
                    }

                }
            }
            catch 
            {
                
            }
        }
    }
}
